package com.hcss.common.redis.base;

import org.springframework.data.redis.core.RedisTemplate;

import java.util.Collection;
import java.util.concurrent.TimeUnit;

/**
 * @描述: RedisTemplate Dao层
 * @作者: xuqian
 * @创建日期: 2018-01-12 16:40
 * @公司 浙江鸿程计算机系统有限公司
 */
public interface BaseRedisDao<T> {

    /**
     * 获取RedisTemplate
     * @return
     */
    RedisTemplate getRedisTemplate();

    /**
     * 向redis中插入数据
     * @param key
     * @param value
     */
    void insert(String key, T value);

    /**
     * 根据key获取对象
     * @param key
     * @return
     */
    T selectObject(String key);

    /**
     * 清除key对应数据
     * @param key
     */
    void clear(String key);

    /**
     * 清除key集合对应数据
     * @param keys
     */
    void clear(Collection keys);

    /**
     * 清除能匹配上pattern的所有key对应数据
     * @param pattern
     */
    void clearAll(String pattern);

    /**
     * 设置key对应失效时间
     * @param key
     * @param time
     * @param unit
     */
    void setTime(String key, long time, TimeUnit unit);
}
